#include "app_common.h"
#include "pthread.h"


int a = 0;
// 初始化一个互斥锁
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *fun(void *arg)
{
    for (size_t i = 0; i < 2000; i++)
    {
        pthread_mutex_lock(&mutex);
        a++;
        pthread_mutex_unlock(&mutex);

        // a++ 不是原子操作
        // 1.读取a的值 2.计算 3. 写回到内存
    }
    
}

int main(int argc, char const *argv[])
{

    pthread_t ids[10];
    for (size_t i = 0; i < 10; i++)
    {
        pthread_create(&ids[i], NULL, fun, NULL);
    }

    for (size_t i = 0; i < 10; i++)
    {
        pthread_join(ids[i], NULL);
    }

    log_info("a = %d", a);


    return 0;
}
